#include <stdio.h>
#include <unistd.h>

#include "ohos_init.h"
#include "cmsis_os2.h"

#include "hi_io.h"
#include "hi_gpio.h"

#define RED_LED_PIN 7
#define GREEN_LED_PIN 13
#define YELLOW_LED_PIN 14

static void LedTask(void)
{
    //初始化GPIO
    GpioInit();

    //设置LED引脚的复用功能为普通GPIO
    hi_io_set_func(RED_LED_PIN, HI_IO_FUNC_GPIO_7_GPIO);
    hi_io_set_func(YELLOW_LED_PIN, HI_IO_FUNC_GPIO_14_GPIO);
    hi_io_set_func(GREEN_LED_PIN, HI_IO_FUNC_GPIO_13_GPIO);


    //设置GPIO为输出模式
    IoTGpioSetDir(RED_LED_PIN, HI_GPIO_DIR_OUT);
    IoTGpioSetDir(YELLOW_LED_PIN, HI_GPIO_DIR_OUT);
    IoTGpioSetDir(GREEN_LED_PIN, HI_GPIO_DIR_OUT);


    while (1)
    {
        //红灯亮
        IoTGpioSetOutputVal(RED_LED_PIN, 1);
        IoTGpioSetOutputVal(YELLOW_LED_PIN, 0);
        IoTGpioSetOutputVal(GREEN_LED_PIN, 0);
        usleep(1000000);

        //黄灯亮
        IoTGpioSetOutputVal(RED_LED_PIN, 0);
        IoTGpioSetOutputVal(YELLOW_LED_PIN, 1);
        IoTGpioSetOutputVal(GREEN_LED_PIN, 0);
        usleep(1000000);

        //绿灯亮
        IoTGpioSetOutputVal(RED_LED_PIN, 0);
        IoTGpioSetOutputVal(YELLOW_LED_PIN, 0);
        IoTGpioSetOutputVal(GREEN_LED_PIN, 1);
        usleep(1000000);
    }
}

//加入线程
// static void LedExampleEntry(void)
// {
//     osThreadAttr_t attr;

//     attr.name = "LedTask";
//     attr.attr_bits = 0U;
//     attr.cb_mem = NULL;
//     attr.cb_size = 0U;
//     attr.stack_mem = NULL;
//     attr.stack_size = 1024;
//     attr.priority = 20;

//     if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL)
//     {
//         printf("Falied to create LedTask!\n");
//     }
// }

SYSRUN(LedTask);